// Barrel Gun (A ridiculous commission by Alfredo)

ACTOR BarrelGun : IDMWeapon
{
	Weapon.AmmoType "IDMRocketAmmo"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 15
	Weapon.Selectionorder 50
	//Weapon.PreferredSkin "RocketMarine"
	Inventory.PickupMessage "Barrel Gun!"
	Tag "Barrel Gun"
	Obituary "%o was nuked by %k's barrels!"
	+WEAPON.BFG
	+WEAPON.EXPLOSIVE
	+WEAPON.NOLMS
	+WEAPON.NOAUTOAIM
	States
	{
	Spawn:
	  BRLG A -1 Bright
	  Stop
    Ready:
	  BARG A 1 A_WeaponReady
	  Loop
	Select:
	  TNT1 A 0 A_PlaySound("weapons/wswitch",CHAN_WEAPON)
    Sloop:
	  BARG A 1 A_Raise
	  Loop
	Deselect:
	  BARG A 1 A_Lower
	  Loop
	Fire:
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_JumpIfInventory("PowerIDMWeaponLevel2",1,"Level2")
	  TNT1 A 0 A_JumpIfInventory("PowerQuadDamage",1,"Quad")
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_FireCustomMissile("BarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,53) A_FireCustomMissile("BarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_FireCustomMissile("BarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("BarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_FireCustomMissile("BarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("BarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_FireCustomMissile("BarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("BarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_FireCustomMissile("BarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("BarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  BARG A 15
	  BARG A 2 Offset(0,49)
	  BARG A 2 Offset(0,44)
	  BARG A 2 Offset(0,40)
	  BARG A 2 Offset(0,37)
	  BARG A 2 Offset(0,34)
	  BARG A 2 A_Refire
	  Goto Ready
	Quad:
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,53) A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  TNT1 A 0 A_Playsound("weapons/grenlf2")
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),0,random(-6,6),-8,0,5)
	  BARG A 3 Bright Offset(0,55) A_FireCustomMissile("ExtremeBarrelMissile",random(-10,10),1,random(-6,6),-8,0,5)
	  TNT1 A 0 A_CheckReload
	  Goto Fire+22
	Level2:
	  TNT1 A 0 A_JumpIfInventory("PowerQuadDamage",1,"QuadLevel2")
	  TNT1 A 0 A_FireCustomMissile("BigBarrelMissile",0,1)
	  BARG A 3 Bright Offset(0,53) A_TakeInventory("IDMRocketAmmo",14)
	  BARG A 15
	  Goto Fire+22
	QuadLevel2:
	  TNT1 A 0 A_Playsound("misc/qdmg",CHAN_AUTO)
	  Goto Level2+1
	}
}

ACTOR BarrelMissile
{
	Health 20
	Radius 10
	Height 42
	Mass 10
	Speed 40
	Gravity 0.25
	Damage 200
	Projectile
	ProjectileKickBack 100
	-NOGRAVITY
	-NOTELEPORT
	-NOBLOOD
	-OLDRADIUSDMG
	+SKYEXPLODE
	+ACTIVATEMCROSS
	+DONTGIB
	+NOICEDEATH
	+EXTREMEDEATH
	Obituary "%o was nuked by %k's barrels!"
	BloodColor "Green"
	States
	{
	Spawn:
	  BAR1 AB 3 Bright
	  Loop
	Death:
      BEXP A 5 Bright
      BEXP B 5 Bright A_Playsound("world/barrelx",CHAN_VOICE)
      BEXP CCCCC 1 Bright A_Explode(random(50,150),160,1,0,80)
      BEXP DDDDD 1 Bright A_Explode(random(100,300),192,1,0,96)
      BEXP EEEEEEEE 1 Bright A_Explode(random(25,75),160,1,0,80)
      Stop
	}
}

ACTOR ExtremeBarrelMissile : BarrelMissile
{
	States
	{
	XDeath:
	  TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	  Goto Death
	}
}

ACTOR BigBarrelMissile : BarrelMissile
{
	Scale 5.0
	States
	{
	Death:
      BEXP A 5 Bright
      BEXP B 5 Bright A_Playsound("world/barrelx",CHAN_VOICE)
      BEXP CCCCC 1 Bright A_Explode(random(50,150),1000,1,0,160)
      BEXP DDDDD 1 Bright A_Explode(random(100,300),1000,1,0,192)
      BEXP EEEEEEEE 1 Bright A_Explode(random(25,75),1000,1,0,160)
      Stop
	}
}

ACTOR BarrelMushroom : IDMMushroom
{
	Obituary "%o was nuked by %k's barrels!"
}